package com.study.compose.coroutines

import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withTimeoutOrNull

/**
 * 流的取消操作
 */

fun main() = runBlocking<Unit> {

    /**
     * 使用超时，处理流的取消操作，超时自动取消
     */
    withTimeoutOrNull(5000) {
        flowSimple().collect {
            println(it)
        }
    }

    /**
     * 或者
     */
    val job = launch {
        flowSimple().collect {
            println(it)
        }
    }

    delay(5000)
    job.cancel()

}